Bilgisayar mühendisliğinde, uyuyan berber sorunu işletim sistemleri konusunda klasik bir sorundur. Berber ve müşteriler prosesler olarak düşünülebilir.
Semaphore Müşteriler = 0
Semaphore Berber = 0
Semaphore sandalyelereErişim = 1 # mutex
int BoşSandalyeSayısı = N # toplam sandalye sayısı
def Berber():
while true: # Bir sonsuz döngü içinde çalış.
P(Müşteriler) # Bir müşteri yakalamaya çalış. Eğer uygun bir müşteri yoksa uyu.
P(sandalyelereErişim) # Uyandım - uygun sandalye sayısını değiştir.
BoşSandalyeSayısı++ # Bir sandalye boşa çıktı.
V(Berber) # Tıraşa hazırım.
V(sandalyelereErişim) # Artık sandalyeler üzerinde kilide ihtiyaç yok.
# (Tıraş)
def Müşteri():
while true: # Bir sonsuz döngü içinde çalış.
P(sandalyelereErişim) # Sandalyelere ulaşmaya çalış.
if BoşSandalyeSayısı > 0: # Eğer boşta sandalye varsa:
BoşSandalyeSayısı-- # bir sandalyeye otur
V(Müşteriler) # müşteri bekleyen berberi uyar
V(sandalyelereErişim) # artık sandalyeler üzerinde kilide ihtiyaç yok
P(Berber) # sıra bu müşterinin, fakat berber meşgulse bekle.
# (Tıraş)
else: # boşta sandalye yok; şanssızlık...
V(sandalyelereErişim) # sandalyeler üzerindeki kilidi bırakmayı unutma!
# (Tıraş olmadan ayrıl)
Orijinal kaynak: uyuyan berber sorunu. Creative Commons Atıf-BenzerPaylaşım Lisansı ile paylaşılmıştır.
Ne Demek sitesindeki bilgiler kullanıcılar vasıtasıyla veya otomatik oluşturulmuştur. Buradaki bilgilerin doğru olduğu garanti edilmez. Düzeltilmesi gereken bilgi olduğunu düşünüyorsanız bizimle iletişime geçiniz. Her türlü görüş, destek ve önerileriniz için iletisim@nedemek.page